package com.victor.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import com.victor.entity.User;
import com.victor.entity.UserAdd;
import com.victor.entity.UserAddKey;
import com.victor.entity.Log;

@Mapper
public interface RegisteruserDao {

	/**
	 * 获取注册用户列表（flag传0是查询正常列表 1是查询已冻结列表）注册时间筛选（选择时间）
	 * 
	 * @param flag
	 * @param ruStarttime
	 * @param ruEndtime
	 * @return
	 */
	List<User> getUsers(@Param("frozen") String frozen, @Param("ruStarttime") String ruStarttime,
			@Param("ruEndtime") String ruEndtime);

	/**
	 * 批量冻结
	 * 
	 * @param userids
	 * @return
	 */
	int batchFrozen(@Param("userids") int[] userids, @Param("frozen_cycle") String frozen_cycle,
			@Param("frozen_starttime") String frozen_starttime, @Param("frozen_endtime") String frozen_endtime,
			@Param("frozen_title") String frozen_title, @Param("frozen_details") String frozen_details);

	/**
	 * 用户详情
	 * 
	 * @param userid
	 * @return
	 */
	@Select({ "select * from user where id=#{userid}" })
	User getUserByid(@Param("userid") Integer userid);

	/**
	 * 添加操作日志
	 * 
	 * @param userLog
	 * @return
	 */
	@Insert({ "insert into log (date,time,adminid,content) values (#{date},#{time},#{adminid},#{content})" })
	boolean addUserLog(Log log);

	/**
	 * 获取操作日志列表
	 * 
	 * @return
	 */
//	@Select({ "select * from user_log order by id desc" })
	List<Log> getAllUserLog(String ulStarttime, String ulEndtime);

	/**
	 * 通过传入的userids查询需要发送短信的用户列表
	 * 
	 * @param userids
	 * @return
	 */
	List<User> getUserByUserids(int[] userids);


	Map<String, Object> getUserAddByuserid(@Param("userid") Integer userid);

	@Select({ "select * from user_add where userid=#{userid}" })
	UserAdd getUserAddByUserid(@Param("userid") Integer userid);

	int addKey(@Param("key_name") String key_name);//

	int delKey(@Param("key_name") String key_name);//

	@Insert({ "insert into  user_add_key (key_name,key_meaning) values (#{key_name},#{key_meaning}) " })
	int addUserAddKey(@Param("key_name") String key_name, @Param("key_meaning") String key_meaning);

	@Select({ "select * from user_add_key" })
	List<UserAddKey> getUserAddKey();

	@Delete("delete from user_add_key where key_name=#{key_name}")
	int delUserAddKey(@Param("key_name") String key_name);

}
